Provisioning a geographical image for retrieval

ABSTRACT

A system for provisioning a geographical image for retrieval, comprising: an application server operating to receive a query for a geographical region in a geographical area of coverage; and a database server operating to store a plurality of geo-image tiles that cover the geographical area of coverage at different zoom levels, the database server is coupled to the application server to receive the query from the application server and return one or more of the plurality of geo-image tiles to illustrate the geographical region requested in the query; wherein the plurality of geo-image tiles are partitioned for storage in the database server in accordance with a database management system (DBMS) scheme and indexed or retrieval with a non-spatial index.

BACKGROUND

Internet-based mapping, such as web-mapping, becomes popular with theintroduction of Google™ Maps, Microsoft® Virtual Earth™ and Yahoo!® Mapsbecause it provides visualization of the world as well as detailedgeographic areas in terms of geographical images (hereinafter,“geo-images”), including raster maps, satellite images and DigitalElevation Models (DEMs). Thus, geo-images provide aerial and satelliteviews in a very simple and comfortable manner in a web-basedenvironment. Conventionally, an image tiling scheme is employed toflexibly store and retrieve geo-images for Internet-based mapping. Undera tiling scheme, a geo-image is partitioned into multiple “tiles.” Thetiles may be viewed as partial image data sets in a designated imageformat such as JPEG, and one or more image databases are used to storetiles of the geo-image instead of the whole image. When a particularportion of the geo-image covering a given geographical area isrequested, such as a request for a map, corresponding tiles of the imageare retrieved and composed. Then, the requested image portion isdisplayed by stitching together in a graphical user interface (GUI),such as a web browser, the set of pre-rendered tiles.

For images that have multiple levels of coverage and resolution such assatellite images, their corresponding subdivided tiles also havemultiple levels. For example, to cover the entire continental UnitedStates, either a few small-scale tiles or hundreds of millions oflarge-scale tiles are used, with a total size of hundreds of Gigabytesstored on a tile server. Thus, when a web surfer selects a mapping of anarea in the continental United States by performing drag and zoomoperations on a geo-image thereof, one or more tile servers supply thosetiles that have the appropriate resolution and cover the requestedlocation window (e.g., a rectangle) representing visible boundaries. Thegeographical area covered by such a requested window is referred hereinas a geographical bounding rectangle (GBR).

The tiling scheme is typically used for web-mapping applications becausethe GBR being browsed by a web surfer is only a very small portion of awhole geographical area of interest, and the size of the geo-image datacovering the whole area is so large that it is not possible to storethem in a client's disk or to download all of them in real time from thetiling server. Thus, the conventional approach is to subdivide thesurface of the whole geographic area at each different zoom level intotiles with an appropriate smaller size and store them in one or moretile servers. Given a GBR and a viewing window rectangle (WR), the tileserver will only respond with tiles both at fixed zoom level andoccupied by the requested GBR.

To support a huge number of clients' image requests efficiently,existing solutions typically employ multiple tile servers operating orprocessing in parallel to implement a tiling scheme for imageprovisioning to service the many requests. For example, web mapping maybe serviced by a distributed file system (DFS) having multiple filechunk servers therein for storing tiles. Typically, the DFS alsoincludes a master server for directory service. There are severallimitations in using a DFS to store images, such as geo-images, for webmapping services. First, each chunk server maintains a fixed partitionof images and processes queries individually. As a result, they cannotbe optimized for load balance if the requests for images in onegeographical area are much higher than requests for images in anothergeographical area. Second, the DFS can only respond with an individualtile at a time because it does not have a mosaic functionality at theserver side to provide a whole geo-image according to a GBR. Thus, mostimage customization is performed on the client side rather than on theserver side. Consequently, there is a potential loss of server sideinformation integration and service chaining, and thus a potential lossof benefits of a service oriented architecture (SOA).

In another example, web mapping may be serviced by the parallelprocessing in a SQL system having multiple SQL server databases therein.Each SQL server database is responsible for managing and retrievingimages in a particular geographic zone, and these zones aregeographically partitioned. A participating SQL server database in theSQL system has only a mosaic functionality over locally stored imagetiles, and not a cropping functionality. Because these individual SQLserver databases are not collaborative, the SQL system cannot provideimages across zones. Therefore, it also fails to provide the wholegeo-image with an arbitrary GBR. Further, the SQL system does notoptimize load balance. Like the DFS mentioned above, each SQL serverdatabase maintains a fixed partition of images. Thus, the participatingSQL server databases are not cooperative as data not shared, with thepossibility of some servers overloading while others are idling.

In general, the aforementioned current solutions for Internet-basedmapping commonly organize images by geographic zones, and store thetiles of each image in a single tile server. Consequently, (a)assembling images across zones is not supported by the tile servers; (b)when a query requests multiple images in the same geographic zone, thetiles of these images may not be retrieved in parallel as they arelocated in the same tile server; and (c) when the request rate for theimages covering one geographical area is significantly higher than thatcovering another geographical area, the corresponding tile severs maynot be load balanced. Thus, the existing solutions have limitations insupporting intra-query parallelism, that is, the capability ofsubdividing a query into multiple sub-queries to be executed inparallel. They also have limitations in supporting inter-queryparallelism, that is, the capability of balancing servers' loads toanswer multiple queries concurrently.

Accordingly, there is a desire to provide image provisioning, forexample, via Internet-based mapping such as web mapping, that ischaracterized by server-side mosaic and cropping functionalities toprovide information integration and service chaining to reap thebenefits of a SOA. Furthermore, there is a desire to provide imageprovisioning that includes the capability to cover an arbitrary GBRhierarchically and supports both inter-query parallelism and intra-queryparallelism.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments are illustrated by way of example and not limited in thefollowing figure(s), in which like numerals indicate like elements, inwhich:

FIG. 1 illustrates a sequence of hierarchical subdivisions of ageographical area of coverage into image tiles, according to oneembodiment.

FIG. 2 illustrates a naming convention for subdivided image tiles,according to one embodiment.

FIG. 3 illustrates a hash-range partitioning mechanism used to partitionimage tiles for storage, according one embodiment.

FIG. 4 illustrates a data flow chart responding to a query for ageo-image, according to one embodiment.

FIG. 5 illustrates a process or hierarchically subdividing ageographical n image request process, according to one embodiment.

FIG. 6 illustrates a geographic information service that may beintegrated with a H-Tiling scheme, according to one embodiment.

FIG. 7 illustrates a process for hierarchically subdividing ageographical area of interest into image tiles, according to oneembodiment.

FIG. 8 illustrates a process for receiving and responding to a query fora geo-image, according to one embodiment.

FIG. 9 illustrates a processing for integrating a geographic informationservice with a H-Tiling scheme, according to one embodiment.

FIG. 10 illustrates a computing platform that may be used to implement aH-tiling scheme, according to one embodiment.

DETAILED DESCRIPTION

For simplicity and illustrative purposes, the principles of theembodiments are described by referring mainly to examples thereof. Inthe following description, numerous specific details are set forth inorder to provide a thorough understanding of the embodiments. It will beapparent however, to one of ordinary skill in the art, that theembodiments may be practiced without limitation to these specificdetails. In other instances, well known methods and structures have notbeen described in detail so as not to unnecessarily obscure theembodiments.

Described herein are systems and methods for hierarchically dividing ageo image into a number of tiles and indexing the tiles such that thoseoverlapping an arbitrary GBR may be retrieved efficiently for imageprovisioning. In one embodiment, a geo-image is divided in a quad-treemanner, wherein each quad-tree node represents an image tile with anassigned identifying number (ID) that may be generated by encoding thegeographical location information of the tile. Upon receiving anarbitrary GBR and a WR as requested by, for example, a web browser, atile server operates to identify the IDs of those tiles that overlap theGBR after fixing a zoom level. If the overlapped tiles are stored in adatabase table, a database index (e.g., a b-tree index) may be createdon the ID column to accelerate a subsequent query processing. In anotherembodiment, there is provided organization and indexing of image tilesat the server side based on parallel database technology. This providesmore flexible, across-zone image compositions for various applicationsand support for inter-query parallelism and intra-query parallelism forhigh-throughput image provisioning. Tile indices are also co-partitionedwith the indexed data for locality based optimization. Furthermore, thetilling scheme of images may be integrated with other location orientedinformation to support a wide spectrum of applications that usegeo-images.

Accordingly, in one embodiment, a system based on parallel database,rather than a DFS or a system with multiple databases, is used toimplement the tiling scheme and tile indexing therein. In such a system,tiles are hash-partitioned and range-partitioned for parallel queryprocessing. B-tree indices are used in the system, and they areco-partitioned with data for locality based optimization. Furthermore,the multiple nodes of the parallel database system are load balanced tosupport both inter-query parallelism and intra-query parallelism. Forexample, when multiple tiles are requested, the sub-queries of a single“big” query may be parallelized for concurrent execution.

Proper server-side tile management includes proper indexing of tiles inorder to efficiently retrieve, from the large number of stored tiles,those tiles that cover or overlap a visible bounding box such as a GBR.Spatial indexing is often used in existing solutions to retrievelocation-related data, including geo-image tiles. The inventors havealso noted that indexing is typically employed in a database managementsystem (DMBS) for efficient query execution. Thus, in variousembodiments for tile-based geo-image provisioning as described herein, aDBMS index (e.g., a B-tree index) is leveraged, rather than a specificspatial index that is conventionally used, to provide a more reliableand faster tile access. In one embodiment, a DBMS index is employed in ageo-image tile indexing scheme called a Hierarchical Tiling (H-Tiling)scheme that includes two parts: 1) a first process to hierarchicallydivide the surface captured in a geo-image into tiles; and 2) a secondprocess to retrieve the tiles that intersect with the query window. Thefirst process for hierarchically subdividing a geo-image of ageographical area of coverage into tiles is described below withreference to FIG. 7, with further supports from other figures asindicated.

At 710, the hierarchical subdivisions of a geo-image starts with anidentification of a desired geographical area of coverage, representedby a square (rectangle or any parallelogram) named R at level 0, asillustrated by FIG. 1. An example of a satellite image of the Earth isused herein as the desired geographical area of coverage to describe theH-Tiling scheme. Thus, the square R represents a two-dimensionalprojection of the satellite image or geo-image of the Earth. However, itshould be understood that the square R may represent any physical areaof interest, on Earth or otherwise.

At 712, The square R is hierarchically subdivided into multiple imagetiles, with each tile having available image content from, for example,a satellite image. These hierarchical subdivisions involve a recursivedecomposition of the original geo-image, or square R. FIG. 1 depicts thesequence of subdivisions, starting with the square 110 named R thatrepresents the entire original geo-image at level 0. First, at level 1,the square 110 is subdivided into square tiles of equal size, e.g.,2²=4, 3²=9, 4²=16, etc. In one embodiment, the square 110 is subdividedin a quad-tree manner into four square tiles R0, R1, R2, and R3 so as touse only 2 bits to encode each level of subdivided tiles (as furtherexplained below). Second, at level 2, each of the four tiles R0-R3 issubdivided again in a quad-tree manner so as to form 2²×2²=16 squaresRxx (where x represents a digit) from the original square R. Thus, asillustrated, to get the next level details recursively, a particularrectangle is divided by its two midlines. The number of subdividedlevels depend on the number of levels of coverage and resolutionavailable for the original geo-image. Thus, for example, if there are Xnumber of available multiple levels of coverage and resolution ofsatellite images of the Earth, the square R is hierarchically subdividedinto the same X number of multiple of levels of image tiles, or H-Tilingtiles. Because the square R represents the Earth surface, thehierarchical subdivisions are based on the Mercator projection, whichtransforms the longitude and latitude of a vertex of a rectangle intothe Mercator coordinates. The following equations determine the x and ycoordinates of a point on a Mercator map, in this case, the square Rfrom its longitude λ and latitude φ:

${x = \lambda},\mspace{14mu} {y = {\frac{1}{2}{{\ln ( \frac{1 + {\sin (\varphi)}}{1 - {\sin (\varphi)}} )}.}}}$

After subdividing the original square R (which is a parent square) intofour smaller ones (which are child squares), the smaller squares arenumbered clockwise from 0 to 3, and these square numbers are appended tothe name of the original square R to get the name of each new square.Thus, as illustrated in FIG. 1, the four squares are named R0, R1, R2,and R3. Likewise, as illustrated in FIG. 2, after subdividing therectangle R3 into four smaller ones that are numbered clockwise from 0to 3, these smaller ones are named R30, R31, R32, and R33. This processis recursive or repetitive, and the naming scheme is to append thenumber of the child rectangle to its parent's name. As shown in FIG. 1,the root square is square R.

At 714, each of the H-Tiling tiles at all levels is given or assigned aunique integer identification (ID). The name of an H-Tiling tile, alsoreferred herein as an H-Tiling node, may be encoded to an integer ID byassigning two bits to each level and encoding the original square Ras 1. For example, R13 may be encoded as binary 10111; thus, a 64-bitinteger may hold an H-Tiling ID up to level 31. The ID encoding isunique for each H-Tiling node. Thus, given an ID, Htld, of any H-Tilingnode, the node's level may be obtained from following formula:

level(Htld)=floor(log 4(Htld)),

wherein, as understood in the art, floor(x) is a basic math functionavailable in most computer programming languages that outputs thelargest integer less than or equal to x.

The minimum and maximum longitudes and latitudes of each H-Tiling nodemay be determined from the aforementioned equations for (x,y) and (λ,φ).Conversely, given a geographical point, its level l may be determined,from which the ID, Htld, of the H-Tiling node may be calculated. ThisH-Tiling node is the only one at level l that contains the given point.

Instead of a conventional DFS or a system with multiple SQL serverdatabases as described above, a parallel database system may be used tostore the generated tiles. An example of such a system is a parallelDBMS. Thus, at 716, after the aforementioned hierarchical subdivisionphase, which may be performed offline, all the tiles at different levelsmay be organized in a table like the one depicted in Table 1. As shownin the table, the “Htld” column indicates the integer ID of a tile. The“Content” column indicates the corresponding image content of each tilein a Binary Large Object (BLOB) data format (or any other desired dataformat). The corresponding image content of each tile is the availablegeo-image at the resolution corresponding to each tile at its particularlevel.

TABLE 1 HtId Content 1 [BLOB] 10 [BLOB] 11 [BLOB] 12 [BLOB] 13 [BLOB]

At 718, a non-spatial index, such as a traditional DBMS index (B-Tree,Hash-index, etc.), is created on the “Htld” column so as to index theunique integer IDs of the tiles for querying.

The parallel database system, such as a parallel DBMS, includes multipleprocessors, herein referred to as processing nodes (as opposed toH-Tiling nodes discussed above). Thus, at 720, Table 1 is thenpartitioned for storing tiles in the multiple processing nodes. A tablemay be partitioned based on various partitioning schemes or methods fora database system (e.g., DBMS), such as a hash-partition, a rangepartition, a list partition, or a range-list partition.

Under a hash partitioning of a table, one attribute, a composite ofmultiple attributes, a certain function of one attribute, or a functionof the composite of multiple attributes is selected as the partitionkey. For example, the partition key may be an attribute of the H-TilingIDs, a function of the H-Tiling IDs, and/or one or more attributes ofthe image content in the tiles. The records of the table are thenpartitioned based on a designated hash function that is applied to thevalues of the selected partition key, where records having the same hashvalue of partition keys are distributed to the same node. Under a rangepartitioning of a table, records are distributed to multiple nodes basedon the value ranges of a selected attribute or attributes.

In the aforementioned parallel database system, all processing nodestherein may process queries, no matter where the data is located, and arequest distributor operates to balance the loads of these nodes. Incontrast, with the conventional multi-database approach, a datapartition is associated with a designated server node and thusaccessible only by that node. Accordingly, the parallel database systemas described herein is better able to support inter-query parallelismthan the conventional multi-database approach. Also, under variouspartitionings of a table, the tiles making an image may be located inmultiple nodes and therefore may be accessed in parallel. Thus, aparallel database approach as described herein further supportsintra-query parallelism.

Because the image tiles in the H-Tilling scheme represent a hierarchy ofgeographic regions, it is desirable to hash partition these regions forparallel processing while limiting such a hash partition to a certainlevel of the hierarchy. Otherwise, hash partitioning beyond a certaindetailed tile level may cause increased inter-node communication which,in turn, may override the benefits of parallel tile access. Accordingly,FIG. 3 illustrates a hash-range partitioning mechanism being employed,wherein, along with the H-Tilling hierarchy, a partition-level 310 isintroduced, whereby the H-Tiling ID corresponding to thispartition-level is the “prefix” 320 of the IDs of all its descendenttiles. In one embodiment, a function is defined to extract this “prefix”from those descendants. In this way, the hash partition of tiles on thepartition key becomes a hash-range partition. That is, above thepartition-level 310, tiles are hash partitioned (i.e. coarser tiles arehash partitioned), and then below the partition-level 310, tiles in thesame geographic range are co-located (i.e., located in the sameprocessing node).

Accordingly, the partition-level 310 provide the prefix length of theH-Tilling ID, on which the hash-partitioning function may be computed.There is a tradeoff in determining the partition-level 310 for ahash-partitioned index. The bigger the partition-level, the moreH-tilling digits (i.e., more information) on which the hash function isrequired to calculate, which requires more processing resources.However, this contributes to a better balance between the partitions.Therefore, the partition-level 310 may be chosen or selected to be theminimum level that provides a desired balance between the hashpartitions. It should be noted that the partition key is not a uniqueindex to tiles. Rather, it determines which node a tile resides, andthat tile may be retrieved using the index of the unique Htlds (e.g.,the B-tree) for the tiles that is localized to that node.

Not only tiles but also the index of the unique Htlds of the tiles maybe partitioned. Thus, at 722, the index of the unique Htlds ispartitioned. In one embodiment, the table of tiles and the index of theunique Htlds may be co-partitioned, i.e., the index partition and thetiles it indexes are co-located in the same node. Because the indexentries are H-Tiling IDs, they may be co-partitioned with the tilesbased on the same partition key values (e.g., for the hash-rangepartition).

The second process in the H-Tiling scheme for retrieving the tiles thatintersect with a query window is described below with reference to FIG.8, with further illustration from a data flow chart 400 illustrated inFIG. 4 and an image request process 500 illustrated in FIG. 5.

At 810, a query for a geo-image of a geographical region in geographicalarea of coverage, such as the square R discussed above, is received atan application server 450 (FIG. 4). The query may be directly providedat the application server 450 or through a data network, such as theInternet or an intranet (not illustrated). For example, a web-mappinguser may initiate a query by initiating a drag or zoom operation on amap to view a geo-image of a particular location in a client webbrowser, which executes a web-mapping application as provided by theapplication server 450. In turn, the client web browser sends the queryvia the Internet to the application server 450 as instructed by theweb-mapping application. The query is a request that includesinformation or a description of a viewing window rectangle (WR)represented by its width and height (e.g., 500×600) and a correspondingGBR to be viewed in the WR. The GBR is represented by its minimum andmaximum longitudes and its minimum and maximum latitudes, e.g.,100.03°/102.05° for minimum/maximum longitude and 30.4°/31.2° forminimum/maximum latitude. This query, as represented by the data flow412 in FIG. 4, is sent to the application server 450.

At 812, the application server 450 determines or calculates the requiredresolution for displaying the requested geo-image based on the receivedWR and GBR information. From the calculated resolution, a closest zoomlevel (ZL) is also selected because each ZL has a definite resolutionaccording to the quad-tree structure used to subdivide the image tiles.ZL is the level to retrieve a set of image tiles that overlaps with oroccupies the requested GBR. This calculation is represented by the dataflow 412 (FIG. 4).

At 814, the application server 450 also determines or calculates a setof unique H-Tiling IDs, i.e., Htlds, of the image tiles based on the GBRand ZL information. As noted earlier, given the ZL information andpoints on the GBR, the Htlds may be calculated. The set of calculatedHtlds, or ID set (IS), represents the query as originally received bythe application server 450 at 810.

At 816, the application server 450 rewrites or divides the query, i.e.,the set IS, as multiple subqueries to be executed in parallel in theprocessing nodes of a parallel database, such as the parallel DBMS 470(FIG. 4). Because the query has been converted to the set IS, i.e., aset of Htlds, it may be subdivided into multiple subqueries, eachincluding one or more Htlds, in the same manner that the index of theunique Htlds was partitioned at 722 above.

At 818, the set IS, as subdivided, is provided to multiple processingnodes in the DBMS server 470 for parallel execution in these nodes toaccess or retrieve the corresponding image tiles therein based on thenon-spatial indexing of the Htlds. This is illustrated by the data flow416 (FIG. 4). Both the application server 450 and the DBMS server 470may be included in a H-Tiling system that is hosted by a serviceprovider, such as a web-mapping service provider.

At 820, from the parallel processing, the DBMS server 470 returns a setor mosaic of the selected tiles (TS) that corresponds to the set IS tothe application server 450. This is illustrated by the data flow 418(FIG. 4) and the TS 510 (FIG. 5).

At 822, the application server 450 assembles the mosaic of selectedtiles into one geo-image 520 (FIG. 5), based on the image content in theselected tiles.

At 824, based on the received GBR information, the application server450 crops the assembled geo-image to cut out those portions of thegeo-image that is outside of the GBR 530 in order to form a resultingimage (RI) 540 (FIG. 5). This is illustrated by the data flow 414 (FIG.4).

In one embodiment, the aforementioned H-Tiling system may be providedwith a standard Web Coverage Service (WCS) interface. This makes it easyto form a service chain with other geographic information services. Forexample, tiling-based image access may be integrated with the retrievalof other geographic location oriented information. These point locationoriented information, such as cities, airports, are specified withgeo-location (longitude and latitude), as well as with the identifier ofthe image tiles in which they are located. Although the image tileidentifications may be derived from the location of the above points,these image tile identifications may be materialized and stored in adatabase for fast access. This tiling approach allows these pointlocation oriented information as well as the relationships of thesepoints to be accessed in a two-phase filtering process. For example,when a mapping query is about “an airport nearby a city,” the areacovered by the image tiles that cover around the geo-location of thecity is identified, and the geo-locations of the airports within thatarea are first selected in a first-phase filtering. Next, the searchresults may be refined in a secondary filtering to select the nearestone of the selected airports.

FIG. 9 illustrates a method 900, which is the aforementioned tilingapproach, with reference to an illustration in FIG. 6, where the pointswith distance (A, P)<d are desired to be found, where point A is thecity, point P is the airport, and d is some desired maximum distancebetween A and P (for a “nearby” airport).

At 910, the tile of desired point A (i.e., a desired location) isidentified based on its geo-location and the image content of themultiple tiles stored, for example, in the DBMS server 470. This isperformed in similar manner to as described in FIG. 8 at 812 and 814.

At 912, the minimal number of surrounding tiles (shown as the blocks 610in FIG. 6) with respect to d is calculated or determined.

At 914, from a first approximate filtering based on the image contentsin the surrounding tiles and the point location oriented information,airport points B and C are selected as candidates in the calculatedtiles.

At 916, refinement is made with a second filtering, wherein the airportpoint B is satisfied as being near the city point A with distancesmaller than d.

This image-tile based two phase filtering process is illustrated in FIG.7, which significantly enhanced the nearest neighbor search usingpair-wise comparison. Note that the hierarchical tilling scheme can beused to step-wise narrow down the search area.

FIG. 10 illustrates a block diagram of a computerized system 1000 thatis operable to be used as a computing platform for implementing theapplication server 450 and the DBMS server 470 described earlier. Thecomputerized system 1000 includes one or more processors, such asprocessor 1002, providing an execution platform for executing software.In the case of the DBMS server 470, multiple processors are includedtherein to provide multiple processing nodes. Thus, the computerizedsystem 1000 includes one or more single-core or multi-core processors ofany of a number of computer processors, such as processors from Intel,AMD, and Cyrix. As referred herein, a computer processor may be ageneral-purpose processor, such as a central processing unit (CPU) orany other multi-purpose processor or microprocessor. A computerprocessor also may be a special-purpose processor, such as a graphicsprocessing unit (GPU), an audio processor, a digital signal processor,or another processor dedicated for one or more processing purposes.Commands and data from the processor(s) 1002 are communicated over acommunication bus 1004 or through point-to-point links with othercomponents in the computer system 1000.

The computer system 1000 also includes a main memory 1006 where softwareis resident during runtime, and a secondary memory 1008. The secondarymemory 1008 may also be a computer-readable medium (CRM) that may beused to store a database of the image tiles for retrieval and softwareapplications for web mapping and database querying. The main memory 1006and secondary memory 1008 (and an optional removable storage unit 1014)each includes, for example, a hard disk drive 1010 and/or a removablestorage drive 1012 representing a floppy diskette drive, a magnetic tapedrive, a compact disk drive, etc., or a nonvolatile memory where a copyof the software is stored. In one example, the secondary memory 1008also includes ROM (read only memory), EPROM (erasable, programmableROM), EEPROM (electrically erasable, programmable ROM), or any otherelectronic, optical, magnetic, or other storage or transmission devicecapable of providing a processor or processing unit withcomputer-readable instructions.

The computer system 1000 includes a display 1020 connected via a displayadapter 1022, user interfaces comprising one or more input devices 1018,such as a keyboard, a mouse, a stylus, and the like. The display 1020provides a display component for displaying the GUI 100 (FIG. 1) and GUI200 (FIG. 2), for example. However, the input devices 1018 and thedisplay 1020 are optional. A network interface 1030 is provided forcommunicating with other computer systems via, for example, a networksuch as the Internet to provide users with access to database of imagetiles.

What has been described and illustrated herein is an embodiment alongwith some of its variations. The terms, descriptions and figures usedherein are set forth by way of illustration only and are not meant aslimitations. Those skilled in the art will recognize that manyvariations are possible within the spirit and scope of the subjectmatter, which is intended to be defined by the following claims—andtheir equivalents—in which all terms are meant in their broadestreasonable sense unless otherwise indicated.

What is claimed is:
 1. A method for provisioning a geographical imagefor retrieval, comprising: identifying a geographical area of coverage;subdividing the desired geographical area of coverage into a pluralityof tiles that are arranged hierarchically in multiple levels, the tilesare provided with a corresponding geographical image of the geographicalarea of coverage to form image tiles; assigning a unique identification(ID) to each of the plurality of image tiles; organizing the pluralityof image tiles and the unique IDs in a table that corresponds one of theunique IDs with one of the plurality of image tiles; indexing the uniqueIDs in the table with a non-spatial index to form an index of the uniqueIDs for querying; partitioning the table using a first databasemanagement system (DBMS) partitioning scheme to divide the plurality ofimage tiles for storage in a plurality of processing nodes of a DBMS;and partitioning the index of the unique IDs using a second DBMSpartitioning scheme to divide the unique IDs for storage in theplurality of processing nodes of the DBMS.
 2. The method of claim 1,wherein partitioning the index of the unique IDs comprises:co-partitioning the index of the unique IDs with the partitioning of thetable so that each partition of the unique IDs and the image tiles thatthe each partition indexes are located in the same processing node inthe DBMS.
 3. The method of claim 1, wherein partitioning the table usingthe first DBMS partitioning scheme comprises: partitioning the tableusing at least one of a hash partitioning scheme and a rangepartitioning scheme.
 4. The method of claim 1, wherein partitioning theindex of the unique IDs using the second DBMS partitioning schemecomprises: partitioning the index of the unique IDs using at least oneof a hash partitioning scheme and a range partitioning scheme.
 5. Themethod of claim 1, wherein the first and second DBMS partitioningschemes are the same.
 6. The method of claim 1, wherein the first DBMSpartitioning scheme includes a hash partitioning scheme, andpartitioning the table using the first DBMS partitioning schemecomprises: selecting a partition-level; partitioning the table using thehash partitioning scheme above the selected partition level.
 7. Themethod of claim 6, wherein the first DBMS partitioning scheme furtherincludes a range partitioning scheme, and partitioning the table usingthe first DBMS partitioning scheme comprises: partitioning the tableusing the range partitioning scheme below the selected partition level.8. The method of claim 1, further comprising: receiving a query for arequested geographical region in the geographical area of interest;subdividing the query into multiple subqueries in accordance with thesecond DBMS partitioning scheme used to partition the index of theunique IDs of the plurality of image tiles; providing the multiplesubqueries to the plurality of processing nodes of the DBMS for parallelprocessing of the subqueries; parallel processing the multiplesubqueries with the processing nodes of the DBMS to retrieve one or moreof the plurality of image tiles that overlap the requested geographicalregion; assembling the retrieved one or more image tiles into ageographical image of the requested geographical region; and respondingto the query with the geographical image.
 9. The method of claim 8,wherein receiving the query for the requested geographical regioncomprises: receiving a description of a viewing window for viewing therequested geographical region; and receiving a description of ageographical boundary window of the requested geographical region thatis to be viewed in the viewing window.
 10. The method of claim 9,further comprising: cropping the geographical image to fit thegeographical boundary window.
 11. The method of claim 8, furthercomprising: determining the one or more image files that overlap therequested geographical region; and identifying a set of one or more ofthe unique IDs that are assigned to the one or more image files.
 12. Themethod of claim 11, wherein subdividing the query into multiplesubqueries comprises: subdividing the set of one or more unique IDs intoa plurality of subsets of one or more unique IDs.
 13. The method ofclaim 1, further comprising: identifying a first desired location in thegeographical area of coverage; identifying a first one of the pluralityof image tiles having the first desired location therein; determiningone or more of the plurality of image tiles that surround the first tilebased on a desired distance from the first desired location; andfiltering the first image tile and the one or more surrounding tiles toidentify one or more secondary desired locations therein.
 14. The methodof claim 13, further comprising: filtering the identified one or moresecondary desired locations to determine at least one of the one or moresecondary desired locations that identifying a second desired locationin the geographical area of coverage.
 15. The method of claim 1, whereinsubdividing the desired geographical area of coverage into a pluralityof tiles comprises subdividing the desired geographical area of coverageinto a plurality of tiles of equal size.
 16. A system for provisioning ageographical image for retrieval, comprising: an application serveroperating to receive a query for a geographical region in a geographicalarea of coverage; and a database server operating to store a pluralityof geo-image tiles that cover the geographical area of coverage atdifferent zoom levels, the database server is coupled to the applicationserver to receive the query from the application server and return oneor more of the plurality of geo-image tiles to illustrate thegeographical region requested in the query; wherein the plurality ofgeo-image tiles are partitioned for storage in the database server inaccordance with a database management system (DBMS) scheme and indexedor retrieval with a non-spatial index.
 17. The system of claim 16,wherein the application server further operating to divide the queryinto multiple subqueries for paralleling processing of the query. 18.The system of claim 17, wherein the database server includes: aplurality of processing units to process the query by parallelprocessing the subqueries received from the application server.
 19. Thesystem of claim 16, wherein the plurality of geo-image tiles at each ofthe different zoom levels are of equal size.
 20. A computer readablemedium on which is encoded computer programming code executed by acomputer processor to: identify a geographical area of coverage;subdivide the desired geographical area of coverage into a plurality oftiles that are arranged hierarchically in multiple levels, the tiles areprovided with a corresponding geographical image of the geographicalarea of coverage to form image tiles; assign a unique identification(ID) to each of the plurality of image tiles; organize the plurality ofimage tiles and the unique IDs in a table that corresponds one of theunique IDs with one of the plurality of image tiles; indexing the uniqueIDs in the table with a non-spatial index to form an index of the uniqueIDs for querying; partition the table using a first database managementsystem (DBMS) partitioning scheme to divide the plurality of image tilesfor storage in a plurality of processing nodes of a DBMS; and partitionthe index of the unique IDs using a second DBMS partitioning scheme todivide the unique Ds for storage in the plurality of processing nodes ofthe DBMS.